23

» WarCraft 3 / Освещение

Похожие вопросы:

ответ
Я использовал такую модель для тумана. Просто белое свечение, ставил в качестве дудада, в редакторе объектов указывал оттенок (255,255,255 — белый, далее соответственно). С освещением ничего не сделаешь, да.

23

» WarCraft 3 / Уровень предмета

Похожие вопросы:

ответ
 function StartAbilityCooldown takes unit whichUnit, integer abilityId, real cd returns boolean
        local integer pAbility = 0

        if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId  ) < 1 or cd == 0.00  then
            return false
        endif
        
        set pAbility = GetUnitAbility(whichUnit, abilityId)
        
        if pAbility < 1 then
            return false
        else

            if ReadRealMemory( pAbility+0x134 ) != 0 or ReadRealMemory( pAbility+0x138 ) != 0 then
                call WriteRealMemory( pAbility+0x134,0 )
                call WriteRealMemory( pAbility+0x138,0 )
            endif
            
            set Memory[pReserverdIntArg1 / 4] = SetRealIntoMemory(cd)
            call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
            return IsAbilityOnCooldown( pAbility )
        endif
        return false
    endfunction
ответ
Есть один фокус, я его давно нашёл и использую.
Ты можешь дать юниту предмет, в этот момент юнит получит все абилки из предмета. Если ты изменишь им уровень - параметры точно так же поменяются. Если выбросишь предмет - абилки с повышенными уровнями удаляться нормально.
Таким образом можно создать "Когти атаки (+6)", которые будут иметь абилку на +6/8/10 атаки. В нужный момент даёшь предмету 1 заряд, выбрасываешь его, и возвращаешь. При подборе смотришь сколько зарядов, если больше 0 - даёшь абилке уровень равный зарядам +1 (и повторять это каждый, когда предмет подбирается, т.к. уровни абилок за предметом не сохраняются). В итоге получаешь что-то вроде чарки / заточки предмета, без лишнего геморроя с заменой, но описание предмета будет неизменно, офк
Суть в том что нельзя регулировать уровень одинаковых абилок если "Когтей" несколько в инвентаре... нельзя напрямую. Можно выбросить предмет и дать его снова, тогда его абилки будут как бы последними в очереди... и ссылаясь на абилку можно регулировать уровень бонусов именно от последнего предмета...
ответ
Name Legion:
меня не волнует уровень героя я хочу убрать этот предмет если их больше 2..уровень предмета то да..по другому я не вижу...вопрос в не в этом вопрос в том что увеличить а что убрать
пример взял отсюда
Item System
Events
Unit - A unit Acquires an item
Conditions
Actions
Set Item = 0
For each (Integer Slot_Integer) from 1 to 6, do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Item level of (Item carried by (Hero manipulating item) in slot Slot_Integer)) Equal to (Item level of (Item being manipulated))
Then - Actions
Set Item = (Item + 1)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Item Greater than 1
Then - Actions
Hero - Drop (Item being manipulated) from (Hero manipulating item)
Game - Display to (All players) for 5.00 seconds the text: Can't carry more th...
Else - Actions
решил вопрос....я проверял сколько предметов такого типа предмета и 2 убрал...написал так чтобы он понимал только этот тип предмета....теперь он правильно работает....надеюсь и другим этот триггер поможет в реализации..правда его надо доработать ну тем не менее
вот
тип переменной
ответ
Вот, слегка модифицировал твой вариант. Лучше, найти какую-нибудь готовую систему, ибо предметы всегда будут перемещаться, да и с полным инвентарем не корректно работает.
ответ
Можно попытаться поставить уровень предмета выше 8-го, предварительно зажав клавишу shift.
Потестил, получилось установить 150 уровень предмету.

23

» WarCraft 3 / Как убрать иконки и эффекты

Похожие вопросы:

ответ
Хозяин Миров:
Tobi123, Нет, конечно не его, пустышка есть. Стоп, значит надо для всех один эффект и заклинание дать? Попробую.
Audes, Но не на два же слова! Но тогда как увеличить это место?
Tobi123, Попробовал, выносит, как только вхожу юнитом в зону действия ауры (Аура у здания).
ответ
SilweR:
Сделал через костыль - взял ауру "Торнадо (замедление)", обнулил все ее эффекты, сделал целью "сам воин" и поставил нужное заклинание. Но может, есть более изящные решения?
В принципе, ты сам сделал самое простое. Теоретически можно еще как-то через дамми-юнита заморочиться, но проще всего - то, что ты уже сделал.
ответ
импортируй этот файл в карту и пропиши ему путь "units\CommandFunc.txt"
Данным способом можно убрать "Патруль" у всех юнитов на карте без исключения

для тех кому интересно, как это сделано
[CmdPatrol]
Art=CommandPatrol
Buttonpos=0,-11
и ссылочка на статью на хайве
ответ
8gabriel8, Ну я сказал главное без наведения невидно.

23

» WarCraft 3 / Напомните название карты

Похожие вопросы:

ответ
закрыт по таймауту
ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Поведение ИИ

Похожие вопросы:

ответ
ИИ стандартный, полагаю? Стандартному ИИ вроде как вижн не важен, он и так знает где все находятся, если мне не изменяет память. Как от него не прячься, найдет сразу. Если уж очень хочется - давать юнитов нейтралам и делать их союзным всем ботам. (игроков 16, если не изменяет память). Или давать союзным игрокам, при наличии. По крайней мере не будут мчаться в след за армией. Однако вполне могут быть более качественные решения проблемы, я стандартный ИИ не изучал, не могу быть уверен в офигительности предложенного решения. :)
ответ
1.интерфейс/монстры-возвращение охраны ставь на 10000
2.удаляешь игрока 12 чтобы в игре он незначился а монстров создаёшь для него уже в игре у них недолжна быть прикреплена точка ожидания
3.их надо заставлять переодически двигаться либо всех разом в пределе 5 сек,либо переберая поочерёдно в 0,1сек а если их очень много то 0,05сек
4.то что ты описываешь бывает при очень большом количестве мобов,вариант сделать норм систему где мобы не наваливались волнами на предыдущих адержались определённого кол на карте
ответ
Попробовал прикрепить голову и прочее забаганное к кости Bone_Head, всё работает. В подобных ситуациях можно пробовать крепить мясо к кости старше по иерархии. Обычно они мало чем отличаются (особенно когда речь идёт о костях с приставкой "Bone_" в начале их названия) от тех, что стоят на одну ступень ниже по иерархии.
И ещё, советую удалить лицо изначальной банши, так как его уже загородила башка сильваны. Тоже самое и с туловищем, и с прочими скрытыми частями модели, это уменьшит вес. Также не забывайте использовать функцию оптимизации модели.

23

» WarCraft 3 / Как сделать эту абилку?

Похожие вопросы:

ответ
Готово!
ответ
У целителей и волшебниц уже есть способности, только они запрещенные, если именно это то что тебе нужно, то создай пустое исследование и добавь его в требования(requirements) у способности.
ответ
Был подобный вопрос, там есть карта: xgm.guru/p/wc3/199494.
ответ
Самый простой способ и один из самых криво выглядящих - чтобы герой качал подставные способности, которые никак не связаны с реальными - с универсальным описанием вида "первая способность", "вторая способность", а реальные способности чтобы выдавались и прокачивались триггерно на основе прокачки подставных.
ответ
Drulia_san, Ну да.
Добавляешь аурку - вот тебе баф на юните. Самый простой способ как по мне.
+Можно эффекты настроить, что вполне неплохо. Пока висит фейковый баф(наша аура) - на юните есть эффект.
Через дамми касты я пробовал, но долго+муторно+подключается дамми система = +лаги и местами утечки.
Насчёт таймаута - это уже по самим спеллам, я долго мучался чтобы оно всё работало как надо и не оверлапалось
Вот такой штукой у меня удаляется баф:
public function unitRemoveAbilityandBuffBY(unit u,integer dhv,integer mLv) returns boolean
	boolean b=UnitRemoveAbility(u,dhv)
  	UnitMakeAbilityPermanent(u,false,dhv)
  	UnitRemoveAbility(u,mLv)
	return b

23

» WarCraft 3 / Подскажите пожалуйста название карты:

Похожие вопросы:

ответ
War3.mpq/UI/Console
War3.mpq/UI/Widgets/Console
ответ
Wyett, ты можешь добавлять подобные этим:
function ... takes ... returns ...
Код
endfunction
Резака купить можно, но это будет абсолютно не похоже на покупку дирижабля.
ответ
gabriel_fisher, скорее всего, тебе нужны анимационные теги
теги бывают разные: alternate, gold, lumber, defend, flesh и др
например, у рабочего есть анимации attack, walk, death и если ему добавить тег lumber, тогда вместо этих анимаций будут проигрываться attack lumber, walk lumber и death lumber соответственно.
Теги можно добавлять/убирать тригерно
Анимация - Add/Remove Animation Tag
или с помощью jass
native AddUnitAnimationProperties takes unit whichUnit, string animProperties, boolean add returns nothing
Также теги можно добавлять в Редакторе Объектов
Графика - Нужная анимация
ответ
закрыт по таймауту
ответ
vlad2010pilot, как изменить текст Предметы я уже написал.
А то что ты хочешь изменить (Меню паузы или Таблица рекордов) лежит:
Граница - UI\Widgets\EscMenu\Human\editbox-border.blp
Кнопка развертывания - UI\Widgets\Glues\Gluescreen-Scrollbar-DownArrow.blp
Кнопка сворачивания - UI\Widgets\Glues\Gluescreen-Scrollbar-UpArrow.blp
Фон - UI\Widgets\EscMenu\Human\editbox-background.blp

23

» WarCraft 3 / Размер декорации ?

Похожие вопросы:

ответ
слк оптимизаторы + тула векса
короче поиск по запросу оптимизатор
ответ
Цикл — это loop? Мб лимит операций. Попробуй таймером.
Изменение текстур земли — это
SetTerrainType(real x, real y, integer terrainType, integer variation, integer area, integer shape)
ответ
Увеличить максимальный масштаб в редакторе объектов.
ответ
PhysCraft, да, карта вполне могла сломаться при пересылке. Попробуй переслать обратно и проверить откроется ли она у твоего напарника.

23

» WarCraft 3 / Напомните карту

Похожие вопросы:

ответ
Если там Архамонд бегал с серым фалосом за паладинами, то карта называется: 18+
ответ
Все нашел, извиняйте
ответ
закрыт по таймауту
ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Очень странный баг

Похожие вопросы:

ответ
в чем вопрос?
ответ
Проблема решена. Обнаружилась довольно неожиданно - заметил, что во время крита герой не разбивал лицо сам себе, начал искать модификаторы атаки - у героя было 3 пустышки с нулевыми значениями на основе "ракет". При всех пустых значениях вылетает невидимая ракета по самому себе.
ответ
Вшито в движок. Простым смертным метелица не дает возможности в редакторе пользоваться % снижением здоровья всех войск.
ответ
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально

в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами

23

» Администрация XGM / Ссылка картинкой

Похожие вопросы:

ответ
По новым правилам выдачи ресурсы проектов 3 уровня попадают на главную. Самый последний ресурс war3 будет отображаться на главной, так что дублировать ресурсы не имеет смысла.
ответ
нет.
ответ
удалил, ибо толку от него нет
ответ
Привет.
Основные правила пользования сайтом - xgm.guru/p/xgm-team/rules
Ссылка на правила для работ раздела WarCraft - xgm.guru/p/wc3/rules-maps?
Конкретно твоя работа проходит премодерацию после внесённых изменений.
ответ
Ачивница приехала, искать в профиле
Блин, тут ведь про то, что сломались достижения?

23

» WarCraft 3 / Некоторые функции юнитов

Похожие вопросы:

ответ
Я бы на вашем месте использовал "Custom Script", то есть вставил локальные переменные на языке jass. Вышло бы приблизительно так:
Вот рабочий триггер. Никаких глобальных переменных. Работает со множествами игроков и юнитов. Не тормозит карту.
В условиях: (Ability being cast) равно "Здесь поставь способность которая применяется на юнита"
Описываю действия:
  1. Создаем локальную переменную юнита
  2. Даем юниту на которого применяется способность "Невидимость", способность "Змеиная ловкость"
  3. В локальную переменную юнита вписываем юнита на которого применена способность
  4. Ждем тридцать секунд, то есть столько времени, сколько у юнита будет доп. способность "Змеиная ловкость"
  5. По истечении времени забираем у юнита доп. способность "Змеиная ловкость"
В пятой строке 'AEev' - это код способности "Змеиная ловкость"
Если что-то не понятно - обращайся.
Напоминаю - триггер полностью играбельный!
К комментарию добавляю карту с рабочим триггером:
ответ
Bravotan, вот список функций (так же есть в теме с мх)
Функций очень много, некоторые работают своеобразно читайте тему с мх и задавайте там вопросы по функциям.
ответ
после разложения костей юниты сами выгружаются из памяти
функция "wait" то же вызывает утечки
она не вызывает утечки, она сама по себе кривая и не подходит под большинство задач
если создать переменную "Point" типа "точка" и изначально задать ей положение центр области "Final", а потом обращаться уже к этой переменной "Point" в триггере событие "боевая единица входит в область "Start", действие "отдать приказ боевой единице следовать в "Point" , то новые точки создаваться не будут?
да
только в гуи еще и создание юнитов утекает тоже насколько я помню, надо тоже заранее точку делать
впринципе можно было бы обойтись одной точкой на все действия, но вам видимо пока рано

23

» WarCraft 3 / Ауры

Похожие вопросы:

ответ
Аура торнадо.
Аура выносливости с отрицательными значениями и врагами в допустимых целях.
ответ
Разрешённые цели - добавляешь "Здания"
Эффект на них работает, но без иконки снизу.
Только что потестил на "Доспехах веры"
ответ
XGM Bot:
Похожие вопросы:

ответ
Карта со всеми утечками и описанием их.
Вместо проклятия банши можно юзать туман(не рекоменд) или безмолвие(там есть вроде бы шанс промаха).
Ещё можно сделать ауру на основе пламени феникса, которое действует на своих.
Юнит повреждён
  • урон меньше 1
  • источник - союзный герой
дать уклонение
вейт/таймер
убрать уклонение если триг юнит не имеет баффа пламени(длительность регулируем)
1
ответ
Extremator, ты сам только что ответил на вопрос
при включении армлета:
  • увеличиваем урон на 31
  • отнимаем 5 хп каждые 0,11 секунды
  • даём 4,17 силы каждые 0,1 секунды пока не будет 25 силы
  • давать 4 брони спустя 0,6 секунды
с промахами радика тоже всё просто
дами каст промахов на всех кто попал под действие радика
как работать с таймерами и дамикастом написано в статьях
или вы ждёте что мы за вас будем делать?
вот статьи
вот стол заказов

ответ
~8gabriel8:
Определил причину невидимости модели после сохранения в war3me. В Geoset Animation Manager должна стоять Alpha 1, а он почему-то делает 0 или -1.

Поставил в Geoset Animation Manager не глобальные Color и Alpha, а для первых кадров всех 6 анимаций. Стало всё нормально и триггерные костыли не нужны.
Модель красного свечения ауры на юнитах:
Карта с этой аурой:
А отредактировать mdx в HEX-редакторе не сумел.
ответ
Настройки нужно немного другие, наземные, враги, организмы, нейтральные. Там далеко не так как написано работает фильтр, некоторые критерии работают только совместно. Где то даже была статья как делать такие настройки, чтобы работало только на нужные цели.

23

» WarCraft 3 / Юнит как Герой + его позиция

Похожие вопросы:

ответ
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).

23

» WarCraft 3 / Проблемы утечек

Похожие вопросы:

ответ
Какой ужас
Делай вот так.
бронепоезд
создать.
направить на 128 точек наверх(90)
сделать неперманентным
текст удалится через 3 секунды
текст затухнет до 100% прозрачности через 3 секунды
Вот чёрт. не успел приплюснуть к посту.
ответ
Ну еще и 100500 юнитов могут начать лагать, 60+ на игрока которые куда то бегут уже не хорошо.
Так же советую сделать всех юнитов суммонами, чтобы они не разлагались
call UnitApplayTimedLife( unit, 'BFig', 0.00 ) это существенно снизит нагрузку на движок
P.S в ваших юнитах совсем не разобрался, какой то кавардак - нету четкого разделения на юнитов для волн, боссы, суммоны героев, герои игроков....
ответ
Прошу прощения, перепроверил, не течет, занимает 4 хендла на время действия, потом чистит
ответ
Steal nerves:
объяснение
если герой удалил с помощью репик героя
Не понял что ты написал, если имеешь в виду удалить героя (RemoveUnit), то это событие никогда не запустит поток, так как объекта то уже нет (удален). Не должно по идее. Во-вторых, нельзя удалить событие. Событие обычно вешают (регистрируют) на объекты (юниты, игроки и др), большая часть стандартных событии (юнит умирает, юнит применяет абилу и др короче общие события) - вешают (регистрируют) на игроков. Короче событие - рычаг, который фиксирует изменения объекта. Есть другие еще событие со временем - "запускать каждые ... секунд" - тоже рычаг, но переменных не дает (типа Dying Unit(), GetTriggerUnit() и др)
Если смотреть по поводу того утечек и как лучше сделать/оптимизировать случаи с единичными событиями, которые вешают на одного юнита:
  1. есть два варианта либо вешаешь все на один триггер события разных юнитов (еще нужно в некоторых случаях запихивать юнитов в группу для проверки, если там такой юнит есть, то не нужно добавлять) и не париться (рабочий вариант). Пример_GUI_Impetus,
  2. Или создаешь каждый раз новый триггер, регистрируешь на него событие юнита (пример при атаке), (так было сделано в доте, видимо для успешной атаки, типа отслеживаешь что это был физический удар, скилл Impetus), потом ссылки на action и condition запоминаешь в переменные или в хэшз, затем удаляешь условие/действие, и триггер удалить. Условие можно не удалять, кто-то писал что не нужно
Можно привести к моему выводу, что событие не удалить. Тестировал давно функции ссылка на игроках, Рисую ситуацию: на игрока зарегистрировал событие (применить скилл), прикрепил также к триггеру условие и действие.
Игрок запускает способность => срабатывает событие => проходит проверка условия => действие.
Если убрать действие или условие, то рычаг все равно работает. Отсюда следует вывод: даже будь хоть выключен триггер, событие все равно работает. Функция GetTriggerEvalCount - этой функции можно проверить сколько раз запускал условие с событием. Но как-то пробовал еще и без условия проверить, прокатывает и на событие походу (точнее это счетчик на событие). Так как рычагом является игрок. А если рычагом станет не игрок, а юнит (часто систему урона на него вешают), то там юнита можно удалить, и событие никогда не заработает, так как его уже нет
Что хочу сказать. Если у тебя 50 триггерных скилов, и 50 триггеров с одним и тем же событием, лучше его оптимизировать, на одно событие. Где-то была ссылка
это будет надеюсь понятно
ответ
Steal nerves:
Alexey103, а у меня работает, проверял. тут ошибка в названии переменной, скорее всего, зачем ты задал такое. Мб оно слишком длинное и через нижнее подчеркивание? и путь модель указывают в jass не через один обратный слэш "/", а через двойной слэш "//". Это на гуи один, на джаз два слэша

23

» WarCraft 3 / Фаталит карта

Похожие вопросы:

ответ
Было создано 22 366 679 экземпляров класса CUnitListNode, которые заняли 255.9 МБ памяти.
При очередной попытке выделения, игра упала.
Виной всему утечки памяти: за 21 минуту набралось 80 тысяч групп и 20 тысяч точек.
Также, из-за выполнения большого количества кода, сильно лагает.
На стадии выбора героя (первые две минуты), выполняется 550 000 операций в секунду, а далее — 1 200 000.
Для сравнения: лимит потока — 300 000 операций.
Хорошо, что ты приложил карту, так как в логе маловато информации.
ответ
ScopteRectuS, ну как я и догадывался, что идет рекурсия.
10 событий - юнит получает урон, на одного юнита... Нужны именно такого типа проверки, всегда в условии триггера проверяй от кого урон и какой этот урон с помощью флага глобалки как в примере.В блоге лича хорошо описаны костыли доты, почитай для общего развития чтобы не наступать на эти грабли еще раз.
ответ
Лол, "создать труп", нельзя ставить 12. Метод тыка побеждает
ответ
ScopteRectuS, нет, таймед лайф это своего рода бафф, он сам следит есть ли юнит. Если юнит сдохнет бафф самовыпилится самостоятельно, так что нет. Смотри баффы иллюзий и волков, они не проигрывают анимации смерти. Подбираешь бафф и все, анимации смерти невидно.
Хайдить тоже можно, под хайдом юнит нормально умирает и разлагается.
ответ
Короче, всем спасибо, пока поставлены еще количество костей, количество граней у кости и добавлены дальность атаки и цели для нее, фаталить перестало
функцию потом поменяю

23

» WarCraft 3 / Как получить кликнувшего игрока?

Похожие вопросы:

ответ
Перебором каждого игрока и проверкой, что у него щас выделен этот юнит
Или использовать EVENT_PLAYER_UNIT_SELECTED , тогда будет TriggerPlayer